1. Statement of the Technical Field
The present invention relates to the field of autonomic computing and more particularly to the self-healing of a server farm.
2. Description of the Related Art
Beginning with the advent of enterprise computing, the complexity of computing technology has increased exponentially in pace with the increasing number innovative technologies available for deployment in the enterprise. The revered Moore's Law has driven tremendous growth in the information technology sector and has been seen as the cornerstone of technological advancement. Still, those at the forefront of deploying and managing new computing technologies have recognized that with the increasing number and complexity of computing technologies comes a price: technology management.
That is to say, the principal aim of interoperability has become increasingly more difficult to attain given the requirement that each component in the enterprise must be monitored and managed. Where in the past the enterprise had previously consisted but of a few, standardized components, presently, the enterprise can include a vast number of disparate components, each able to perform magnificently within specified operational parameters, or dismally outside specified operational parameters. Thus, while it may seem to the lay person that future challenges lie with the development of many new technologies having even more capabilities, one skilled in the art will recognize that the true, future challenge lies squarely within the management of technologies which likely already exist.
In the famed manifesto, Autonomic Computing: IBM's Perspective on the State of Information Technology, Paul Horn, Senior Vice President of IBM Research, observed, “It's not about keeping pace with Moore's Law, but rather dealing with the consequences of its decades-long reign.” Given this observation, Horn suggested a computing parallel to the autonomic nervous system of the biological sciences. Namely, whereas the autonomic nervous system of a human being monitors, regulates, repairs and responds to changing conditions without any conscious effort on the part of the human being, in an autonomic computing system, the system must self-regulate, self-repair and respond to changing conditions, without requiring any conscious effort on the part of the computing system operator.
Thus, while the autonomic nervous system can relieve the human being from the burden of coping with complexity, so too can an autonomic computing system. Rather, the computing system itself can bear the responsibility of coping with its own complexity. The crux of the IBM manifesto relates to eight principal characteristics of an autonomic computing system:                I. The system must “know itself” and include those system components which also possess a system identify.        II. The system must be able to configure and reconfigure itself under varying and unpredictable conditions.        III. The system must never settle for the status quo and the system must always look for ways to optimize its workings.        IV. The system must be self-healing and capable of recovering from routine and extraordinary events that might cause some of its parts to malfunction.        V. The system must be an expert in self-protection.        VI. The system must know its environment and the context surrounding its activity, and act accordingly.        VII. The system must adhere to open standards.        VIII. The system must anticipate the optimized resources needed while keeping its complexity hidden from the user.        
Notably, in accordance with the eight tenants of autonomic computing, several single system and peer-to-peer systems have been proposed in which self-configuration, management and healing have provided a foundation for autonomic operation. Yet, despite the eight tenants of autonomic computing, no existing implementation has addressed the interaction of client computing devices with server processes in a server farm so as to promote self-management and self-healing within the server farm. Rather, most server farms rely upon the use either of a periodic hear-beat mechanism, or the use of a “sprayer” in monitoring the health of servers in the server farm at the time the sprayer assigns a server to handle an incoming request.